<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="./vue.js"></script>
</head>
<body>
  <div id="app">
    <p>{{msg}}</p>
    <button @click="changMsg">修改msg</button>
  </div>
  <script>
    var vm = new Vue({
      el: '#app',
      data: {
        msg: '君不见黄河之水天上来'
      },
      methods: {
        changMsg () {
          // 修改数据
          this.msg = '奔流到海不复回'
          // 修改状态值这个操作是异步的
          // 数据改变了 驱动视图进行更新 但是更新是要有个过程 那么什么时候更新完毕呢？
          // DOM 还没有更新
          // console.log(document.querySelector('p').innerHTML, 1111) // 为什么这里打印的仍然是旧值
          /* this.$nextTick(function () {
            // DOM 现在更新了
            // `this` 绑定到当前实例
            console.log(document.querySelector('p').innerHTML, 2222)
          }) */
          // console.log(this.$nextTick()) // promise
          this.$nextTick().then(function () { })
        }
      },
      updated() {
        // console.log(this.msg, 11111)
        // 这里可以拿到
        // 注意 updated 不会保证所有的子组件也都一起被重绘。如果你希望等到整个视图都重绘完毕，可以在 updated 里使用 vm.$nextTick：
        // console.log(document.querySelector('p').innerHTML, 11111) 
        /* this.$nextTick(function () {
          // Code that will run only after the
          // entire view has been re-rendered
        }) */
      }
    })
  </script>
</body>
</html>
